package com.jiangyg.mall.product.service;

import com.jiangyg.mall.core.support.restful.Pagination;
import com.jiangyg.mall.product.dto.SpuAttrDTO;
import com.jiangyg.mall.product.dto.SpuSaveDTO;
import com.jiangyg.mall.product.vo.SpuAttrVO;
import com.jiangyg.mall.product.vo.SpuInfoVO;

import java.util.List;

/**
 * 类描述：spu 接口
 *
 * @author jiangyg
 * @date 2021-11-13
 */
public interface SpuService {

    /**
     * 功能描述：商品属性分页查询
     *
     * @param pagination 分页参数
     * @return 返回分页商品属性
     */
    Pagination<SpuInfoVO> selectPagination(Pagination<SpuInfoVO> pagination) throws Exception;

    /**
     * 功能描述：保存或者修改spu信息
     *
     * @param dto spu信息
     * @return 结果
     */
    boolean save(SpuSaveDTO dto) throws Exception;

    /**
     * 功能描述：SPU上架
     *
     * @param spuId spuId
     * @return 结果
     */
    boolean published(Long spuId) throws Exception;

    /**
     * 功能描述：SPU 属性信息
     *
     * @param spuId spuId
     * @return 结果
     */
    List<SpuAttrVO> listAttr(Long spuId);

    /**
     * 功能描述：保存spu信息
     *
     * @param spuId     spuId
     * @param baseAttrs 规则信息
     * @return 结果
     */
    boolean saveBaseAttrs(Long spuId, List<SpuAttrDTO> baseAttrs);

    /**
     * 功能描述：根据 SPUID 集合查询 SPU 信息
     *
     * @param ids SPUID 集合
     * @return SPU 集合信息
     */
    List<SpuInfoVO> selectListByIds(List<Long> ids) throws Exception;

}
